home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-01 / snip0493.zip / ANSILOAD.C < prev    next >
C/C++ Source or Header  |  1993-04-05  |  1KB  |  67 lines

  1. /*
  2. **  ANSILOAD.C - tries to detect if an ANSI-style driver is loaded
  3. **
  4. **  public domain by Bob Jarvis
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <dos.h>
  9.  
  10. typedef enum {FALSE, TRUE} LOGICAL;
  11.  
  12. void goto_rc(int row, int col)
  13. {
  14.       union REGS regs;
  15.  
  16.       regs.h.ah = 2;
  17.       regs.h.bh = 0;                /* assumes we're using video page 0 */
  18.       regs.h.dh = (unsigned char)row;
  19.       regs.h.dl = (unsigned char)col;
  20.  
  21.       int86(0x10, ®s, ®s);
  22. }
  23.  
  24. void get_rc(int *row, int *col)
  25. {
  26.       union REGS regs;
  27.  
  28.       regs.h.ah = 3;
  29.       regs.h.bh = 0;                /* again, assume video page 0       */
  30.  
  31.       int86(0x10, ®s, ®s);
  32.  
  33.       *row = regs.h.dh;
  34.       *col = regs.h.dl;
  35. }
  36.  
  37. int is_ansi_loaded(void)
  38. {
  39.       int save_r, save_c;
  40.       int new_r, new_c;
  41.       int isloaded;
  42.  
  43.       get_rc(&save_r, &save_c);
  44.       goto_rc(15,15);
  45.       fputs("\x1B[0;0H", stderr);
  46.  
  47.       get_rc(&new_r, &new_c);
  48.  
  49.       if(new_r == 0 && new_c == 0)
  50.             isloaded = TRUE;
  51.       else
  52.       {
  53.             isloaded = FALSE;
  54.             fputs("\b\b\b\b\b\b      \b\b\b\b\b\b", stderr);
  55.       }
  56.  
  57.       goto_rc(save_r, save_c);
  58.       return isloaded;
  59. }
  60.  
  61. void main(void)
  62. {
  63.       if(is_ansi_loaded())
  64.             puts("ANSI.SYS is loaded");
  65.       else  puts("ANSI.SYS is NOT loaded");
  66. }
  67.